package com.sinping.qh.service.auth.impl;

import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.sinping.qh.api.support.FrontPage;
import com.sinping.qh.repository.mysql.dao.UserLogMapper;
import com.sinping.qh.service.auth.IUserLogService;
import com.sinping.qh.utils.text.MoreStringUtil;
import com.sinping.qh.domain.auth.UserLog;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;

import java.util.Map;

/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author xuerunjia
 * @since 2017-12-19
 */
@Service
public class UserLogServiceImpl extends ServiceImpl<UserLogMapper, UserLog> implements IUserLogService {

    private static final Logger log = LoggerFactory.getLogger(UserLogServiceImpl.class);
    @Override
    public Page<UserLog> selectPageData(FrontPage<UserLog> paramPage) {
        Page<UserLog> userLogPage = new Page<UserLog>();

        if (MoreStringUtil.isNull(paramPage)) {
            return userLogPage;
        }
        Map<String, Object> paramMap = paramPage.getCondition();
        Wrapper<UserLog> wrapper = new EntityWrapper<>();
        if (paramMap != null && !paramMap.isEmpty()) {
            if (!MoreStringUtil.isNull(paramMap.get("start_time"))
                    && !MoreStringUtil.isNull(paramMap.get("end_time"))) {
                wrapper.where("create_time >={0}",paramMap.get("start_time"));
                wrapper.where("create_time < {0}",paramMap.get("end_time"));
            }
            if (!MoreStringUtil.isNull(paramMap.get("type"))) {
                wrapper.where("type = {0}", paramMap.get("type"));
            }
            if (!MoreStringUtil.isNull(paramMap.get("nickname"))) {
                wrapper.like("nickname", paramMap.get("nickname").toString());
            }
            if (!MoreStringUtil.isNull(paramMap.get("user_name"))) {
                wrapper.like("user_name", paramMap.get("user_name").toString());
            }
        }
        if (!MoreStringUtil.isNull(paramPage.getProp())) {
            if (MoreStringUtil.isNull(paramPage.getOrder())
                    || "asc".equals(paramPage.getOrder())) {
                wrapper.orderBy(paramPage.getProp());
            } else if ("desc".equals(paramPage.getOrder())) {
                wrapper.orderBy(paramPage.getProp(), false);
            }
        }else{
            //默认按照时间排序倒序
            wrapper.orderBy("create_time", false);
        }
        userLogPage = this.selectPage(paramPage.toPagePlus(), wrapper);
        return userLogPage;
    }
}
